<?php

class Default_CandidatosController extends SON_Controller_Action
{

    public function indexAction()
    {
    	$eleicao = new Eleicao();
    	$releicao = $eleicao->findByAno($this->_getParam('eleicao'));
    	 
    	if ($releicao) {
    		
    		$form = new SON_Forms_Busca();
	    	$candidato = new Candidato();
	    	$voto = new Voto();
	    	$session = new Zend_Session_Namespace('eleicao' . $this->_getParam('eleicao'));
	    	
	    	$conditions = array('eleicao.ano = ?' => $this->_getParam('eleicao'));
	    	if ($this->_request->isPost()) {
	    		$session->post = $this->_request->getPost();
	    	}
	    	
	    	if ($session->post) {
	    		$form->populate($session->post);
	    		if ($session->post['filtro_busca']) {
	    			$conditions += array('candidato.nome LIKE ?' => '%' . $this->_getParam('filtro_busca') . '%');
	    		}
	    		if ($session->post['cargo_id']) {
	    			$conditions += array('candidato.cargo_id = ?' => $session->post['cargo_id']);
	    		}
	    		if ($session->post['partido_id']) {
	    			$conditions += array('candidato.partido_id = ?' => $session->post['partido_id']);
	    		}
	    		if ($session->post['situacao_id']) {
	    			$conditions += array('candidato.situacao_id = ?' => $session->post['situacao_id']);
	    		}
	    		if ($session->post['resultado_id']) {
	    			$conditions += array('candidato.resultado_id = ?' => $session->post['resultado_id']);
	    		}
	    	}
	        
	        $votos = array();
	        foreach ($voto->getByUsuarioId($this->userId) as $voto) {
	        	$votos[] = $voto->getCandidato_id();
	        }
	        
	        $this->view->votos = $votos;
	        $this->view->eleicao = $releicao;
	        $this->view->form = $form;
	        $this->view->candidatos = $candidato->search(
	            array(
	                'page' => $this->_getParam('page', 1),
	                'conditions' => $conditions
	            )
	        );
        } else {
        	$this->_redirect('/');
        }
    }

    public function votarAction()
    {
    	$this->_helper->layout()->disableLayout();
    	$this->_helper->viewRenderer->setNoRender(true);
    	 
    	if ($this->getRequest()->isXmlHttpRequest()) {
    		if ($this->getRequest()->isPost()) {
    			$voto = new Voto();
    			if ($rvoto = $voto->findByCandidatoIdAndUsuarioID((int) $this->_getParam('id'), $this->userId)) {
    				$voto->delete($rvoto->getId());
    			} else {
    				$data = array('candidato_id' => $this->_getParam('id'), 'usuario_id' => $this->userId);
    				$voto = new Voto($data);
    				$voto->save();
    			}
    		}
    	}
    }

}

